package br.ucb.vitor.mb;


import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import br.ucb.vitor.bean.Mensagem;

/**
 * 
 * @author Vitor
 */
@ManagedBean(name = "grupo3MB")
@SessionScoped
public class Grupo3MB  {

	private static final long serialVersionUID = 1L;

	private List <Mensagem> mensagens;
	private static List <Mensagem> mensagensConversa;
	private Date lastUpdate;
	private Mensagem mensagem;

	
	static {
		mensagensConversa = new ArrayList<Mensagem>();
	}
	
	/**
	 * Creates a new instance of MensagemBean
	 */
	public Grupo3MB() {
		setMensagem(null);
		mensagens = new ArrayList<Mensagem>();
		lastUpdate = new Date();
		mensagem = new Mensagem();

	}

	public Date getLastUpdate() {
		return lastUpdate;
	}

	public void setLastUpdate(Date lastUpdate) {
		this.lastUpdate = lastUpdate;
	}

	public Mensagem getMensagem() {
		return mensagem;
	}

	public void setMensagem(Mensagem mensagem) {
		this.mensagem = mensagem;
	}

	public void enviarMensagem() {
		sendMessage(mensagem);
	}

	/*
	public void firstUnreadMensagem() {
		RequestContext ctx = RequestContext.getCurrentInstance();
		
		Mensagem m = getFirstAfter(lastUpdate);

		ctx.addCallbackParam("ok", m != null);
		if (m == null)
			return;

		lastUpdate = m.getDateSent();
		
		
		ctx.addCallbackParam("user", m.getUser());
		ctx.addCallbackParam("dateSent", "");
		ctx.addCallbackParam("text", m.getMensagem());
		 
	}
	*/


	public void sendMessage(Mensagem msg) {
		
		try {
			
			LoginMB loginMB = (LoginMB) FacesContext.getCurrentInstance().
					getExternalContext().getSessionMap().get("loginMB");
			
			Mensagem ms = new Mensagem();
			ms.setMensagem(msg.getMensagem());
			ms.setUser(loginMB.getMensagem().getUser());
			mensagensConversa.add(ms);
			getMensagens().clear();
			getMensagens().addAll(mensagensConversa);

			/*
		RequestContext ctx = RequestContext.getCurrentInstance();
		ctx.addCallbackParam("ok", msg != null);
		ctx.addCallbackParam("user", msg.getUser());
		ctx.addCallbackParam("dateSent", "");
		ctx.addCallbackParam("text", msg.getMensagem());
			 */
			System.out.println(loginMB.getMensagem().getUser()+ " diz: " +msg.getMensagem());
			getMensagem().setMensagem("");
		}catch (Exception e){
			e.printStackTrace();
		}
	}
	public void updateMessages(){
		getMensagens().clear();
		getMensagens().addAll(mensagensConversa);
	}

	/*
	public Mensagem getFirstAfter(Date after) {
		return getFirstAfter(lastUpdate);
	}
	 */
	public List<Mensagem> getMensagens() {
		return mensagens;
	}

	public void setMensagens(List<Mensagem> mensagens) {
		this.mensagens = mensagens;
	}


}
